Skip to main content

kcalloc

API Overview

kcalloc is an API in Linux kernel. This rule belongs to the api pair type. This rule is generated using APISpecGen.

Rule Description

tip

The resource acquired by kcalloc must be properly released using kfree

info
  • Tags: api pair
  • Parameter Index: N/A
  • CWE Type: CWE-404

Rule Code


import cpp
import semmle.code.cpp.dataflow.new.DataFlow


DataFlow::Node getSource(FunctionCall fc){
fc.getTarget().hasName("kcalloc")
and result.asExpr() = fc
}

DataFlow::Node getSink(FunctionCall fc){
fc.getTarget().hasName("kfree")
and result.asExpr() = fc.getArgument(0)
}

FunctionCall freeTarget(FunctionCall malloc){
DataFlow::localFlow(getSource(malloc), getSink(result))
}

from FunctionCall fc
where fc.getTarget().hasName("kcalloc")
and not exists(
FunctionCall free|
free = freeTarget(fc)
)
select fc.getLocation()